home *** CD-ROM | disk | FTP | other *** search
/ United Public Domain Gold 3 / United Public Domain Gold 3.iso / games / pg326.dms / pg326.adf / DARTS.AMOS / DARTS.amosSourceCode < prev    next >
AMOS Source Code  |  1989-05-09  |  18KB  |  676 lines

  1. ' ********************************** 
  2. ' *** PROGRAM BY PAUL WHITEHEAD  *** 
  3. ' ************ DARTS *************** 
  4. ' ********************************** 
  5. Cls 0
  6. Double Buffer 
  7. Break Off 
  8. Dim TL(2) : Dim SET(2) : Dim LEG(2) : Dim D(60) : Dim TU(8)
  9. Dim N$(10) : Dim AV3(4) : Dim HE(2) : Dim DA(12)
  10. Global X,Y,BB,SC,TL(),PL,SK,PR,N$(),OP,MIS,TURN,LEG(),SET(),BMUL,WIN,SCB,MISS
  11. Global SET,LEG,TDS,HIT,MIS,LHIT,D(),NT,AIM,TM,CD#,COMP,CR,CX,CY,FIN,B1,B2,B3
  12. Global FT,CSS,FTL,CSL,NSB,HP,AV3(),HE(),DA(),IS,TU(),TU,RD,GM,CG,IG,DB,P1
  13. PL=1 : SK=1 : PR=0 : OP=2 : SET=3 : LEG=3 : DB=0
  14. Goto SETUP
  15. Stop 
  16. Procedure SETUP
  17.    N$(1)="Player 1" : N$(2)="Player 2"
  18.    N$(3)="Phil" : N$(4)="John" : N$(5)="Eric"
  19.    N$(6)="Mark" : N$(7)="Jocky" : N$(8)="Richard"
  20.    N$(9)="Peter" : N$(10)="Paul"
  21.    Hide On 
  22.    Close Editor 
  23.    Flash Off 
  24.    Get Rom Fonts 
  25.    Screen Open 1,320,256,64,Lowres : Cls 0
  26.    Screen Open 3,512,256,16,Lowres : Cls 0
  27.    Screen Open 2,512,256,16,Lowres : Cls 0
  28.    Screen To Front 0 : Cls 0 : Screen 0
  29. End Proc
  30. SETUP:
  31. S3=0
  32. SETUP
  33. DART
  34. TITLE
  35. Pack 0 To 3
  36. 'Shift Up 15,5,15,1
  37. Goto QU
  38. NEW:
  39. While Mouse Key<>1
  40. Wend 
  41. Gosub EHELP
  42. While Mouse Key<>1
  43. Wend 
  44. If TU=1 Then Goto TU
  45. QU:
  46. TU=0
  47. RD=0 : GM=0
  48. Show On 
  49. IS=0
  50. MENU
  51. If IS=1 Then Gosub EHELP : IS=0 : Goto QU
  52. If TU=0 Then Goto CONT
  53. '
  54. TU:
  55. Do 
  56. Shoot 
  57. TURN
  58. SR=1 : Gosub EHELP : SR=0
  59. If WIN>0 Then While Mouse Key<>0 : Wend : While Mouse Key<>1 : Wend : TU=0 : Screen 2 : Goto QU
  60. Wait 2
  61. If CG=0 Then BOARD : Screen To Back 3 : Screen Hide 3 : Screen To Front 1 : Screen Show 1 : RESTART : Goto GAME
  62. Loop 
  63. '
  64. CONT:
  65. BOARD
  66. RESTART
  67. Goto GAME
  68. Procedure BOARD
  69.   If DB=1 Then Pop Proc
  70.   Load Iff "DART:Screens/BOARD1",1
  71.    DB=1
  72. End Proc
  73. Procedure INFO
  74.   Load Iff "DART:Screens/info",3
  75. End Proc
  76. Procedure TITLE
  77.   Load Iff "dart:screens/title",2
  78. End Proc
  79. Procedure DART
  80.   Load "dart:sprites/ds1.abk"
  81. End Proc
  82. Procedure AIM
  83.   Sprite 2,X Mouse,Y Mouse,2
  84.   Bob 1,X Screen(X Mouse)+32,Y Screen(Y Mouse)+32,10 : Update 
  85.   Rem Main loop
  86.   Do 
  87.     Rem Move sprite along with mouse 
  88.     Sprite 1,X Mouse,Y Mouse,1
  89.     Rem Move bob 
  90.     Bob 1,X Screen(X Mouse)+32,Y Screen(Y Mouse)+32,10
  91.     Locate 0,1 : Print "                        "
  92.     Locate 0,1 : Print X Mouse;" ";Y Mouse
  93.     If Mouse Key=1 Then Update 
  94.     If Mouse Key=2 Then Stop 
  95.     Wait Vbl 
  96.   Loop 
  97. End Proc
  98. '
  99. POSITION:
  100. COMP=0
  101. If PL=1 and TURN=2 Then COMP=1
  102. If COMP=1 or HP=1 Then COMPO
  103. If COMP=1 Then Goto NHP
  104. If HP=1 Then Paper 47 : Locate 0,29 : Centre "                           "
  105. If HP=1 and TM=1 Then Print At(18,29);AIM
  106. If HP=1 and TM=3 Then Print At(14,29);"Treble ";AIM
  107. If HP=1 and TM=2 Then Print At(14,29);"Double ";AIM
  108. NHP:
  109. POSITION
  110. Return 
  111. '
  112. '
  113. GAME:
  114. If FON=1 Then Goto NSWAP
  115. GAME
  116. NSWAP:
  117. FON=0
  118. Do 
  119.    CSL=0
  120.    BB=0 : SC=0 : TL=0
  121.    Wait 10
  122.    While Mouse Key<>1
  123.       If Key State(69)=True Then Goto QU
  124.       If Mouse Key=2 Then K=0 : Gosub HELP
  125.       If Key State(95)=True Then K=1 : Gosub HELP
  126.    Wend 
  127.    If TL(1)<2 or TL(2)<2 Then Goto FINO
  128.    SCB=TL(TURN)
  129.    RESULTS
  130.    Goto CONTROL
  131. Loop 
  132. '  
  133. FINO:
  134. If TL(TURN)<0 Then TL(TURN)=SCB : Goto GAME
  135. If TL(TURN)=1 Then TL(TURN)=SCB : Goto GAME
  136. If TL(TURN)=0 and(HIT<>5 and HIT<>1) Then TL(TURN)=SCB : Goto GAME
  137. WIN=NT
  138. If(HIT=5 or HIT=1) and TL(TURN)=0 Then WIN=TURN
  139. LEG(WIN)=LEG(WIN)+1
  140. CSS=0
  141. If LEG/2<LEG(WIN) Then LEG(1)=0 : LEG(2)=0 : SET(WIN)=SET(WIN)+1 : CSS=1
  142. SC=0 : RESULTS
  143. If SET/2<SET(WIN) Then FIN=1 : RESULTS : Goto NEW
  144. For T=1 To 2
  145. TL(T)=501 : Next T : 
  146. CSL=1
  147. Goto GAME
  148. '
  149. HELP:
  150. If K=1 Then Wait Key 
  151. EHELP:
  152. If S3=0 Then INFO
  153. Screen To Back 1
  154. Screen To Front 3
  155. Screen Hide 1 : Screen Show 3 : Screen 3
  156. Pen 0 : Paper 2
  157. '
  158. If SR=0 Then Goto NR
  159. '
  160. Bar 110,48 To 515,130
  161. G=0
  162. Repeat 
  163. Inc G
  164. If TU(G*2)<11 and TU((G*2)-1)>10 Then Locate 15,7+G : Centre N$(TU(G*2))+" beat "+N$(TU(G*2-1)-100)
  165. If TU(G*2)>10 and TU((G*2)-1)<11 Then Locate 15,7+G : Centre N$(TU((G*2)-1))+" beat  "+N$(TU(G*2)-100)
  166. Until G=4
  167. If TU(1)<11 and TU(2)<11 Then Locate 15,8 : Centre N$(TU(1))+" v "+N$(TU(2))
  168. If TU(3)<11 and TU(4)<11 Then Locate 15,9 : Centre N$(TU(3))+" v "+N$(TU(4))
  169. If TU(5)<11 and TU(6)<11 Then Locate 15,10 : Centre N$(TU(5))+" v "+N$(TU(6))
  170. If TU(7)<11 and TU(8)<11 Then Locate 15,11 : Centre N$(TU(7))+" v "+N$(TU(8))
  171. Locate 0,0 : For N=1 To 8 : Print TU(N) : Next N
  172. If WIN>0 Then Locate 15,14 : Centre "The Winner is "+N$(TU(WIN)) : TU=0
  173. Goto ENF
  174. NR:
  175. Under On : Print At(15,6);" Instructions for 501 " : Under Off 
  176. Print At(15,8);"The aim of this Game is to decend from 501 to 0."
  177. Print At(15,9);"In order to win the game you must finish with a"
  178. Print At(15,10);"Double or a Bulls eye. If you Fail to finish with "
  179. Print At(15,11);"a Double or a bulls eye the you could go bust and"
  180. Print At(15,12);"fail to win then game."
  181. If IS=1 Then Print At(15,13);"In the game the left mouse button fires the dart."
  182. If IS=1 Then Print At(15,14);"The right mouse button calls up information. "
  183. Paper 3
  184. If TU=0 Then P1=1
  185. Under On : Print At(6,21);N$(P1);At(43,21);N$(OP+1) : Under Off 
  186. AV1=0 : AV2=0 : A1=0 : A2=0 : A3=0 : A4=0 : A5=0 : A6=0
  187. If DA(1)>0 Then A1=DA(4)/DA(1) : If DA(2)>0 Then A2=DA(5)/DA(2) : If DA(3)>0 Then A3=DA(6)/DA(3)
  188. If DA(7)>0 Then A4=DA(10)/DA(7)
  189. If DA(8)>0 Then A5=DA(11)/DA(8)
  190. If DA(9)>0 Then A6=DA(12)/DA(9)
  191. If AV3(3)>0 Then AV1=AV3(1)/AV3(3)
  192. If AV3(4)>0 Then AV2=AV3(2)/AV3(4)
  193. Print At(6,23);"3 Dart Av   :-";AV1;"    ";At(43,23);"3 Dart Av   :-";AV2;"     "
  194. Print At(6,24);"1st Dart Av :-";A1;"    ";At(43,24);"1st Dart Av :-";A4;"    "
  195. Print At(6,25);"2nd Dart Av :-";A2;"    ";At(43,25);"2nd Dart Av :-";A5;"    "
  196. Print At(6,26);"3rd Dart Av :-";A3;"    ";At(43,26);"3rd Dart Av :-";A6;"    "
  197. Print At(6,27);"180's       :-";HE(1);"   ";At(43,27);"180's       :-";HE(2);"    "
  198. ENF:
  199. While Mouse Key<>0 : Wend 
  200. While Mouse Key<>1 : Wend 
  201. S3=1
  202. If SR=1 Then Return 
  203. Screen To Back 3
  204. Screen To Front 1
  205. Screen Hide 3
  206. Screen 1 : Screen Show 1
  207. Return 
  208. '
  209. CONTROL:
  210. TDS=0 : BB=0
  211. Do 
  212.    BB=BB+1
  213.    If TDS=180 Then Inc HE(TURN)
  214.    If BB<4 Then Goto NOFIN
  215.    Inc AV3(2+TURN) : AV3(TURN)=AV3(TURN)+TDS
  216.    Goto GAME
  217.    '
  218.    NOFIN:
  219.    If BB=1 Then Bob Off D(1) : Bob Off D(2) : Bob Off D(3)
  220.    SC=0 : BMUL=0
  221.    Gosub POSITION
  222.    SCORE
  223.    TDS=TDS+SC
  224.    D(BB)=BB
  225.    If MISS=1 Then D(BB)=0
  226.    RESULTS
  227.    FON=0
  228.    If TL(1)<2 or TL(2)<2 and BB<3 Then Goto FINO2
  229. Loop 
  230. FINO2:
  231. FON=1
  232. For N=BB+1 To 3
  233. Bob N,300,300,2 : Next N
  234. BB=4 : 
  235. Goto GAME
  236. '
  237. '
  238. Procedure MENU
  239.    Screen To Back 1
  240.    Screen To Front 2
  241.    Screen Show 2
  242.    Screen 2
  243.    Show On 
  244.    Paper 0
  245.    Locate 0,31 : Centre "Select Option from Menu"
  246.    Ink 1 : Pen 4
  247.    OPTIONS:
  248.    Menu$(1)=" Options "
  249.    Menu$(1,1)="One Player"
  250.    If PL=1 Then Menu$(1,1)="One Player <-"
  251.    Menu$(1,2)="Two Player"
  252.    If PL=2 Then Menu$(1,2)="Two Player <-"
  253.    Menu$(2)="Level "
  254.    Menu$(2,1)="Amateur"
  255.    If SK=1 Then Menu$(2,1)="Amateur      <-"
  256.    Menu$(2,2)="Professional"
  257.    If SK=2 Then Menu$(2,2)="Professional <-"
  258.    Menu$(3)="Game "
  259.    Menu$(3,1)="Start"
  260.    Menu$(3,2)="Practice"
  261.    Menu$(3,3)="Tournament"
  262.    Menu$(5)="Opponent "
  263.    For N=1 To 9
  264.       Menu$(5,N)=N$(N+1) : If N=OP Then Menu$(5,N)=N$(N+1)+" <-"
  265.    Next N
  266.    Menu$(4)="Setup "
  267.    Menu$(4,1)="Legs"
  268.    Menu$(4,2)="Sets"
  269.    Menu$(4,1,1)="3 Legs"
  270.    If LEG=3 Then Menu$(4,1,1)="3 Legs <-"
  271.    Menu$(4,1,2)="5 Legs"
  272.    If LEG=5 Then Menu$(4,1,2)="5 Legs <-"
  273.    Menu$(4,1,3)="7 Legs"
  274.    If LEG=7 Then Menu$(4,1,3)="7 Legs <-"
  275.    Menu$(4,2,1)="1 Sets"
  276.    If SET=1 Then Menu$(4,2,1)="1 Sets <-"
  277.    Menu$(4,2,2)="3 Sets"
  278.    If SET=3 Then Menu$(4,2,2)="3 Sets <-"
  279.    Menu$(4,2,3)="5 Sets"
  280.    If SET=5 Then Menu$(4,2,3)="5 Sets <-"
  281.    Menu$(4,2,4)="7 Sets"
  282.    If SET=7 Then Menu$(4,2,4)="7 Sets <-"
  283.    Menu$(4,2,5)="9 Sets"
  284.    If SET=9 Then Menu$(4,2,5)="9 Sets <-"
  285.    Menu$(4,2,6)="11 Sets"
  286.    If SET=11 Then Menu$(4,2,6)="11 Sets<-"
  287.    '
  288.    Menu$(1,3)="Help On"
  289.    Menu$(1,4)="Instructions"
  290.    If HP=0 Then Menu$(1,3)="Help off"
  291.    On Menu Goto SELECT,SELECT,GAM,SETU,OPER
  292.    On Menu On 
  293.    Menu On 
  294.    Wait Key 
  295.    Goto OPTIONS
  296.    SELECT:
  297.    If Choice(2)=3 and HP=1 Then HP=0 : Goto GIT
  298.    If Choice(2)=3 and HP=0 Then HP=1 : Goto GIT
  299.    If Choice(2)=4 Then IS=1 : Pop Proc
  300.    If Choice(1)=1 Then PL=Choice(2) : If PL=2 Then OP=1
  301.    If Choice(1)=1 Then If PL=1 Then OP=2
  302.    If Choice(1)=2 Then SK=Choice(2)
  303.    GIT:
  304.    On Menu On 
  305.    Goto OPTIONS
  306.    GAM:
  307.    TU=0 : PR=0
  308.    If Choice(2)=1 Then Pop Proc
  309.    If Choice(2)=2 Then PR=1 : Pop Proc
  310.    If Choice(2)=3 Then TU=1 : Pop Proc
  311.    On Menu On 
  312.    Goto OPTIONS
  313.    OPER:
  314.    OP=Choice(2) : If OP=1 Then PL=2
  315.    If OP>1 Then PL=1
  316.    On Menu On 
  317.    Goto OPTIONS
  318.    SETU:
  319.    If Choice(2)=1 Then LEG=2+((Choice(3)*2)-1)
  320.    If Choice(2)=2 Then SET=(Choice(3)*2)-1
  321.    On Menu On 
  322.    Goto OPTIONS
  323. End Proc
  324. Procedure POSITION
  325.   9 Rem----------------------width 
  326.   XW=6+SK : CX=CX : YW=8 : A=1
  327.   Ink 11 : Draw 7,7 To 193,7 : Draw 7,8 To 193,8
  328.   While Mouse Key<>0
  329.   Wend 
  330.   Repeat 
  331.     If A=1 Then Ink 0 : Plot XW,YW : Plot XW,YW-1
  332.     If A=1 and SK=2 Then Plot XW-1,YW : Plot XW-1,YW-1
  333.     If A=0 Then Ink 11 : Plot XW,YW : Plot XW,YW-1
  334.     If A=0 and SK=2 Then Plot XW+1,YW : Plot XW+1,YW-1
  335.     If A=1 Then XW=XW+SK : If XW>192 Then A=0 : If COMP=1 Then CX=CX+1
  336.     If A=0 Then XW=XW-SK : If XW<10 Then A=1
  337.   Until(Mouse Key=1 and COMP=0) or(CX=XW and COMP=1)
  338.   Rem --------------------hight
  339.   While Mouse Key<>0
  340.   Wend 
  341.   Ink 11 : Draw 201,14 To 201,201 : Draw 200,14 To 200,201
  342.   XH=200 : YH=14+SK : CY=CY : A=1
  343.   Repeat 
  344.     If A=1 Then Ink 0 : Plot XH,YH : Plot XH+1,YH
  345.     If A=1 and SK=2 Then Plot XH,YH-1 : Plot XH+1,YH-1
  346.     If A=0 Then Ink 11 : Plot XH,YH : Plot XH+1,YH
  347.     If A=0 and SK=2 Then Plot XH,YH+1 : Plot XH+1,YH+1
  348.     If A=1 Then YH=YH+SK : If YH>201-SK Then A=0 : If COMP=1 Then CY=CY+1
  349.     If A=0 Then YH=YH-SK : If YH<15+SK Then A=1
  350.   Until(Mouse Key=1 and COMP=0) or(CY=YH and COMP=1)
  351.   Rem ---------------------throw 
  352.   '
  353.   MISS=0
  354.   C=Point(XW,YH) : R=Rnd(20) : R2=Rnd(80)
  355.   If C=33 and R=0 Then Goto MISS
  356.   If BB=2 and B1=1 Then If X Bob(1)=XW-16 and Y Bob(1)=YH-14 and R2<10 Then Goto MISS
  357.   If BB=3 and B1=1 Then If X Bob(1)=XW-16 and Y Bob(1)=YH-14 and R2<10 Then Goto MISS
  358.   If BB=3 and B2=1 Then If X Bob(2)=XW-16 and Y Bob(2)=YH-14 and R2<10 Then Goto MISS
  359. '
  360.   ' Show On  
  361.   ' While Mouse Key<>0 : Wend  
  362.   ' While Mouse Key<>1 
  363.   ' YH=Y Screen(Y Mouse) 
  364.   ' XW=X Screen(X Mouse) 
  365.   ' Wend 
  366. '
  367.   Goto HIT
  368.   MISS:
  369.   If BB=1 Then B1=0
  370.   If BB=2 Then B2=0
  371.   If BB=3 Then B3=0
  372.   MISS=1 : Shoot 
  373.   RN=Rnd(1)+1
  374.   Bob BB,XW-16,YH-14,RN : Wait 20 : Bob Off BB
  375.   For N=(YH-5) To 250 : Hot Spot 3,16,16
  376.   Bob 4,XW+4,(YH-14)+N,3 : Next N : Bob Off 4 : Goto ENY
  377.   HIT:
  378.   RN=Rnd(1)+1
  379.  'Hot Spot BB,16,14   
  380.  'Bob BB,XW,YH,RN 
  381.   Bob BB,XW-16,YH-14,RN
  382.   If BB=1 Then B1=1
  383.   If BB=2 Then B2=1
  384.   If BB=3 Then B3=1
  385.   Shoot 
  386.   ENY:
  387.   X=XW : Y=YH
  388. End Proc
  389. Procedure SCORE
  390.    A=X : B=Y
  391.    A=-100+A
  392.    B=107-B
  393.    X#=A : Y#=B
  394.    R=Sqr((A*A)+(B*B))
  395.    If X#=0 Then X#=1
  396.    If Y#=0 Then Y#=1
  397.    D#=Y#/X#
  398.    Degree 
  399.    D#=Atan(D#)
  400.    If X#>0 and Y#>0 Then D#=D#
  401.    If X#<0 and Y#>0 Then D#=180+D#
  402.    If X#<0 and Y#<0 Then D#=180+D#
  403.    If X#>0 and Y#<0 Then D#=360+D#
  404.    '  SCORE 
  405.    If D#>351 or D#<=9 Then SC=6
  406.    If D#>9 and D#<=27 Then SC=13
  407.    If D#>27 and D#<=45 Then SC=4
  408.    If D#>45 and D#<=63 Then SC=18
  409.    If D#>63 and D#<=81 Then SC=1
  410.    If D#>81 and D#<=99 Then SC=20
  411.    If D#>99 and D#<=117 Then SC=5
  412.    If D#>117 and D#<=135 Then SC=12
  413.    If D#>135 and D#<=153 Then SC=9
  414.    If D#>153 and D#<=171 Then SC=14
  415.    If D#>171 and D#<=189 Then SC=11
  416.    If D#>189 and D#<=207 Then SC=8
  417.    If D#>207 and D#<=225 Then SC=16
  418.    If D#>225 and D#<=243 Then SC=7
  419.    If D#>243 and D#<=261 Then SC=19
  420.    If D#>261 and D#<=279 Then SC=3
  421.    If D#>279 and D#<=297 Then SC=17
  422.    If D#>297 and D#<=315 Then SC=2
  423.    If D#>315 and D#<=333 Then SC=15
  424.    If D#>333 and D#<=351 Then SC=10
  425.    BMUL=SC
  426.    HIT=3
  427.    If R<4 Then SC=50 : HIT=1
  428.    If R>=4 and R<=8 Then SC=25 : HIT=2
  429.    If R=>41 and R<48 Then SC=SC*3 : HIT=4
  430.    If R=>69 and R<76 Then SC=SC*2 : HIT=5
  431.    If R=>76 Then SC=0 : HIT=6
  432.    If MISS=1 Then SC=0 : HIT=6
  433.    If TURN=1 Then Inc DA(BB) : DA(3+BB)=DA(3+BB)+SC
  434.    If TURN=2 Then Inc DA(6+BB) : DA(9+BB)=DA(9+BB)+SC
  435. End Proc
  436. Procedure TURN
  437.    If GM>0 Then Goto SKIT
  438.    For N=1 To 8 : TU(N)=2+N : Next N
  439.    TU(1)=1 : If PL=2 Then TU(2)=2
  440.    N=0
  441.    Repeat 
  442.    Inc N : A=Rnd(7)+1 : B=Rnd(7)+1
  443.    Swap TU(A),TU(B)
  444.    Until N=20
  445.    'For N=1 To 8 : Print TU(N) : Next N 
  446. '
  447.   SKIT:
  448.    WIN=0
  449.    If RD=3 and GM=1 Then For N=1 To 8 : If TU(N)<100 Then WIN=N
  450.    If RD=3 and GM=1 Then Next N : Pop Proc
  451.    If RD>0 and CG=0 Then If SET(1)<SET(2) Then TU((GM*2)-1)=TU((GM*2)-1)+100
  452.    If RD>0 and CG=0 Then If SET(1)>SET(2) Then TU(GM*2)=TU(GM*2)+100
  453.    XGAM:
  454.    Inc GM
  455.    If RD=1 and GM=5 Then GM=1
  456.    If RD=2 and GM=3 Then GM=1
  457.    If RD=3 and GM=2 Then Pop Proc
  458.    If GM=1 Then Inc RD
  459.    N=0
  460.    If GM>1 Then Goto SKI1
  461.    Repeat 
  462.    Inc N
  463.    For A=1 To 7
  464.    If TU(A)>10 Then Swap TU(A),TU(A+1)
  465.    Next A
  466.    Until N=20
  467.    SKI1:
  468. '
  469.    NTUN:
  470.     CG=0 : P1=TU((GM*2)-1) : P2=TU(GM*2) : If P1>2 and P2>2 Then CG=1
  471.    If CG=0 Then Goto NCO
  472.    Repeat 
  473.    A=Rnd(P1) : B=Rnd(P2)
  474.    Until A<>B
  475.    If A<B Then TU((GM*2)-1)=TU((GM*2)-1)+100 : Pop Proc
  476.    If A>B Then TU(GM*2)=TU(GM*2)+100 : Pop Proc
  477.    NCO:
  478.    If P2=1 or(P2=2 and P1>1) Then Swap P1,P2 : Swap TU(GM*2),TU((GM*2)-1)
  479.    OP=P2-1
  480.    If OP<>2 Then PL=1
  481.    If P1=1 and P2=2 Then PL=2
  482. End Proc
  483. Procedure RESTART
  484.    FIN=0 : CSS=0 : CSL=0
  485.    Hide On 
  486.    Screen To Back 3
  487.    Screen To Back 2
  488.    Screen To Front 1
  489.    Screen Hide 3 : Screen Hide 2
  490.    Screen Show 1 : Screen 1
  491. '
  492.    For T=1 To 2
  493.    TL(T)=501 : SET(T)=0 : LEG(T)=0 : HE(T)=0 : Next T
  494.    For T=1 To 4 : AV3(T)=0 : Next T
  495.    For T=1 To 12 : DA(T)=0 : Next T
  496.    TURN=Rnd(1)+1
  497.    FT=TURN : FTL=TURN
  498.    If TURN=1 Then FT=2 : FTL=2 : Goto FRR
  499.    If TURN=2 Then FT=1 : FTL=1 : Goto FRR
  500.    FRR:
  501. End Proc
  502. Procedure GAME
  503.    If CSS=0 Then Goto TIT
  504.    CSL=0
  505.    If FT=1 Then FT=2 : FTL=2 : Goto IT
  506.    If FT=2 Then FT=1 : FTL=1 : Goto IT
  507.    TIT:
  508.    If CSL=0 Then Goto TITS
  509.    If FTL=1 Then FTL=2 : Goto TITS
  510.    If FTL=2 Then FTL=1 : 
  511.    TITS:
  512.    If TL(1)<1 or TL(2)<1 Then Goto IT
  513.    If TURN=1 Then TURN=2 : Goto IT
  514.    If TURN=2 Then TURN=1 : 
  515.    IT:
  516.    'Print At(1,1);"fts:";FT 
  517.    'Print At(1,2);"ftl:";FTL
  518.    If CSS=1 Then TURN=FT : CSS=0
  519.    If CSL=1 Then TURN=FTL : CSL=0
  520.    If TURN=1 Then NT=2
  521.    If TURN=2 Then NT=1
  522.    If PR=1 Then TURN=1
  523. End Proc
  524. Procedure RESULTS
  525.    TL(TURN)=TL(TURN)-SC
  526.    Paper 0 : Pen 5
  527.    Print At(30,6);"     "
  528.    Print At(30,10);"     "
  529.    Paper 47 : Locate 0,29 : Centre "                                    "
  530.    W=WIN
  531.    If COMP=1 Then W=OP+1
  532.    If TU=1 and W=1 Then W=P1
  533.    If FIN=1 Then Locate 0,29 : Centre "Winner is "+N$(W) : Pop Proc
  534.    If TU=0 Then P1=1
  535.    If TURN=1 Then Locate 0,29 : Centre N$(P1)+"  < V    "+N$(OP+1)
  536.    If TURN=2 Then Locate 0,29 : Centre N$(P1)+"    V >  "+N$(OP+1)
  537.    Pen 11
  538.    Paper 0
  539.    Print At(29,18);SET(1);At(32,18);SET(2)
  540.    Print At(29,23);LEG(1);At(32,23);LEG(2)
  541.    Print At(30,4);"Score";At(30,6);SC
  542.    Print At(30,8);"Total";At(30,10);TDS
  543.    A=0 : If TL(1)<100 Then A=1
  544.    If TL(1)<10 Then A=2
  545.    Paper 47 : Print At(2,29);"   ";At(33,29);"   "
  546.    Print At(2+A,29);TL(1);At(33,29);TL(2)
  547. End Proc
  548. Procedure COMPO
  549.    '  If BB=1 Then Locate 1,1 : Input TL(TURN)
  550.    T=TL(TURN) : D=4-BB : OT=TL(NT) : GF=0
  551.    UF=Rnd(15) : R=Rnd(19)+1 : O=Rnd(12) : OO=Rnd(20) : AIM=0
  552.    PF=0 : If TL(NT)<101 Then PF=1
  553.    '
  554.    TM=3
  555.    For N=1 To 20
  556.       If N*2=T Then AIM=N : TM=2
  557.    Next N
  558.    If T=50 and OO<15 Then AIM=50 : TM=1
  559.    If T=99 Then AIM=19 : TM=3
  560.    If T=50 and PF=1 and D=1 Then AIM=50 : TM=1
  561.    If T=50 and OO>14 Then AIM=10 : TM=1
  562.    If AIM>0 Then Goto FIN
  563.    If TL(TURN)<140 Then Goto SKIPY
  564.    '
  565.    For N=1 To 50
  566.       If(N*10)=T Then R=1
  567.    Next N
  568.    If R<19 Then AIM=20 : Goto FIN
  569.    If R>18 Then AIM=19 : If R=20 and O<3 Then AIM=50 : TM=1 : Goto FIN
  570.    Goto FIN
  571.    '
  572.    SKIPY:
  573.    '
  574.    If T<101 Then Goto OHNO
  575.    A=20 : N=20 : M=20 : AA=Rnd(6+Rnd(2)) : TM=2
  576.    '
  577.    If UF>13 Then N=50 : TM=1
  578.    If T>170 Then GT=40
  579.    If T>170 and UF=14 Then GT=50
  580.    If T<171 Then GT=0
  581.    DI=51
  582.    TI=3 : AD=9
  583.    Do 
  584.       Repeat 
  585.          If N=49 Then N=20 : TM=2
  586.          If T-((M*3)+(N*TM)+(A*TI))=GT Then AIM=M : TM=3 : Goto FIN
  587.          A=A-1 : If A=0 Then A=20 : M=M-1 : If M=6 Then M=20 : N=N-1
  588.       Until N=AA
  589.       Inc AD
  590.       If AD=10 Then A=0 : Dec DI
  591.       N=20 : A=20 : M=20
  592.       If DI=49 Then DI=20
  593.       If DI<50 Then GT=DI*2
  594.       GT=GT+AD
  595.       If DI=AA Then Goto OHNO
  596.    Loop 
  597.    '
  598.    '
  599.    OHNO:
  600.    N=20 : M=20 : AA=0 : TI=2 : TM=1 : H=Rnd(15)
  601.    '
  602.    F=0
  603.    If UF>10 and PF=1 and D=1 Then N=50
  604.    If UF>14 or T=110 Then N=50 : F=30
  605.    Do 
  606.       If N=49 Then N=20 : TI=2
  607.       If N=50 Then TI=1
  608.       If T-((N*TI)+(M*TM))=0 Then AIM=M : Goto FIN
  609.       Dec M : If M=0 Then M=20 : Dec N
  610.       If H<14 and N=AA and TM=1 Then TM=4
  611.       If H<14 Then If N=AA and TM=2 Then Goto SKIPY1
  612.       If H<14 Then If N=AA Then N=20+F : Dec TM
  613.       If H>13 Then If N=AA and TM=3 Then Goto SKIPY1
  614.       If H>13 Then If N=AA Then N=20+F : Inc TM
  615.    Loop 
  616.    '
  617.    SKIPY1:
  618.    FIN:
  619.    If AIM=50 Then TM=1
  620.    If T-(AIM*TM)>0 and AIM*TM<21 Then AIM=AIM*TM : TM=1
  621.    If AIM=0 Then AIM=Rnd(19)+1 : Boom 
  622.    'Print At(0,1);"           " 
  623.    'Locate 0,1 : Input "Aim:";AIM 
  624.    'Print At(0,2);"           " 
  625.    'Locate 0,2 : Input "Times:";TM
  626.    If AIM=6 Then CD#=351+9
  627.    If AIM=13 Then CD#=9+9
  628.    If AIM=4 Then CD#=27+9
  629.    If AIM=18 Then CD#=45+9
  630.    If AIM=1 Then CD#=63+9
  631.    If AIM=20 Then CD#=81+9
  632.    If AIM=5 Then CD#=99+9
  633.    If AIM=12 Then CD#=117+9
  634.    If AIM=9 Then CD#=135+9
  635.    If AIM=14 Then CD#=153+9
  636.    If AIM=11 Then CD#=171+9
  637.    If AIM=8 Then CD#=189+9
  638.    If AIM=16 Then CD#=207+9
  639.    If AIM=7 Then CD#=225+9
  640.    If AIM=19 Then CD#=243+9
  641.    If AIM=3 Then CD#=261+9
  642.    If AIM=17 Then CD#=279+9
  643.    If AIM=2 Then CD#=297+9
  644.    If AIM=15 Then CD#=315+9
  645.    If AIM=10 Then CD#=333+9
  646.    ' Print At(0,BB);"         " 
  647.    'Print At(0,5);"         " 
  648.    ' Print At(0,BB);"A=";AIM*TM 
  649.    CR=Rnd(76)
  650.    SI=OP+BB : 
  651.    RS=Rnd(15-SI)
  652.    RY=Rnd(15-SI)
  653.    R2=(15-RS)
  654.    'Print At(0,5);SI
  655.    If TM=3 Then CR=41+Rnd(7)
  656.    If TM=2 Then CR=70+Rnd(7)
  657.    P=Rnd(10)
  658.    '
  659.    '
  660.    If TM=1 and P<10 Then CR=59+((-12+R2)+(Rnd(24-R2-R2)))
  661.    If TM=1 and P>9 Then CR=25+((-16+R2)+(Rnd(32-R2-R2)))
  662.    '   If TM=1 and P<10 Then CR=47+Rnd(24)
  663.    '   If TM=1 and P>9 Then CR=9+Rnd(32)
  664.    If AIM=50 Then CR=Rnd(4)
  665.    If AIM=25 Then CR=Rnd(9)+4
  666.    Degree 
  667.    CX=CR*(Cos(CD#))
  668.    CY=CR*(Sin(CD#))
  669.    CX=CX+100
  670.    CY=107-CY
  671.    RX=(RS)
  672.    RY=(RY)
  673.    AA=Rnd(1)
  674.    If AA=1 Then CX=CX+RX : CY=CY+RY
  675.    If AA=0 Then CX=CX-RX : CY=CY-RY
  676. End Proc